{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "from torch.autograd import Variable\n",
    "import torch as t"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Softmax + MSE Cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        \n",
    "        self.fc1 = nn.Linear(28*28, 30)\n",
    "        self.fc2 = nn.Linear(30, 10)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x = x.view(x.shape[0], -1)\n",
    "        x = self.fc1(x)\n",
    "        x = F.softmax(self.fc2(x))\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mnist_loader import load_data_shared, vectorized_result\n",
    "training_data, validation_data, test_data = load_data_shared(filename=\"../mnist.pkl.gz\",\n",
    "                                                                     seed=666,\n",
    "                                                                     train_size=2000,\n",
    "                                                                     vali_size=0,\n",
    "                                                                     test_size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(data, net):\n",
    "    with t.no_grad():\n",
    "        #for index in range(test_data[0].shape[0]):\n",
    "            # get the inputs\n",
    "        inputs, labels = t.Tensor(data[0]), data[1]\n",
    "\n",
    "        # forward + backward + optimize\n",
    "        outputs = net(inputs)\n",
    "        _, predicted = t.max(outputs, 1)\n",
    "\n",
    "        #print('Predicted: ', predicted)\n",
    "        #print('target: ', t.Tensor(labels).int())\n",
    "\n",
    "        correct = (predicted == t.Tensor(labels)).sum().item()\n",
    "        accuracy = correct / data[0].shape[0]\n",
    "        return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit(net, criterion, optimizer):\n",
    "    loss_scores = []\n",
    "    test_scores = []\n",
    "    train_scores = []\n",
    "    for epoch in range(100):  # loop over the dataset multiple times\n",
    "\n",
    "        # get the inputs\n",
    "        inputs, labels = t.Tensor(training_data[0]), t.Tensor(training_data[1])\n",
    "        vector_labels = t.Tensor([vectorized_result(y) for y in training_data[1]])\n",
    "        # zero the parameter gradients\n",
    "        optimizer.zero_grad()\n",
    "\n",
    "        # forward + backward + optimize\n",
    "        outputs = net(inputs)\n",
    "        loss = criterion(outputs, vector_labels.float())\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        # print statistics\n",
    "        loss_scores.append(loss.item())\n",
    "        train_scores.append(predict(training_data, net))\n",
    "        test_scores.append(predict(test_data, net))\n",
    "    print('Finished Training')\n",
    "    return loss_scores, train_scores, test_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\yinahe\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\ipykernel_launcher.py:11: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n",
      "  # This is added back by InteractiveShellApp.init_path()\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Finished Training\n"
     ]
    }
   ],
   "source": [
    "import torch.optim as optim\n",
    "net1 = Net()\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = optim.SGD(net1.parameters(), lr = 1e-1)\n",
    "loss_scores, train_scores, test_scores = fit(net1, criterion, optimizer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(loss_scores)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(train_scores)\n",
    "plt.plot(test_scores)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Softmax Unit + Cross Entropy Cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit2(net, criterion, optimizer):\n",
    "    loss_scores = []\n",
    "    test_scores = []\n",
    "    train_scores = []\n",
    "    for epoch in range(100):  # loop over the dataset multiple times\n",
    "\n",
    "        # get the inputs\n",
    "        inputs, labels = t.Tensor(training_data[0]), t.Tensor(training_data[1])\n",
    "        vector_labels = t.Tensor([vectorized_result(y) for y in training_data[1]])\n",
    "        # zero the parameter gradients\n",
    "        optimizer.zero_grad()\n",
    "\n",
    "        # forward + backward + optimize\n",
    "        outputs = net(inputs)\n",
    "        loss = criterion(outputs, labels.long())\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        # print statistics\n",
    "        loss_scores.append(loss.item())\n",
    "        train_scores.append(predict(training_data, net))\n",
    "        test_scores.append(predict(test_data, net))\n",
    "    print('Finished Training')\n",
    "    return loss_scores, train_scores, test_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\yinahe\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\ipykernel_launcher.py:11: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n",
      "  # This is added back by InteractiveShellApp.init_path()\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Finished Training\n"
     ]
    }
   ],
   "source": [
    "import torch.optim as optim\n",
    "net2 = Net()\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.SGD(net2.parameters(), lr = 1e-1)\n",
    "loss_scores2, train_scores2, test_scores2 = fit2(net2, criterion, optimizer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(loss_scores)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(train_scores2)\n",
    "plt.plot(test_scores2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MSE VS Cross Entropy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(test_scores)\n",
    "plt.plot(test_scores2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "cross entropy仍然优于MSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
